package Test06;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

//IO流练习
/*
为了保证文件的安全性，就需要对原始文件进行加密存储，再使用的时候再对其进行解密处理。
   加密原理:
       对原始文件中的每一个字节数据进行更改，然后将更改以后的数据存储到新的文件中。
   解密原理:
       读取加密之后的文件，按照加密的规则反向操作，变成原始文件。

   ^ ：异或
       两边相同：false
       两边不同：true
 */
public class Test16 {
    public static void main(String[] args) throws IOException {

        /*System.out.println(100 ^ 10);//110
        System.out.println(110 ^ 10);//100*/

        //加密操作
        //1、创建对象关联原始文件
        FileInputStream fis1 = new FileInputStream("D:\\工作\\src\\girl.txt");
        //2、创建对象关联解密文件
        FileOutputStream fos1 = new FileOutputStream("D:\\工作\\src\\ency.txt");
        //3、加密
        int b1;
        while ((b1 = fis1.read()) != -1) {
            fos1.write(b1 ^ 2);
        }
        //4、释放资源
        fos1.close();
        fis1.close();

        System.out.println("--------------------------------------------------");

        //解密操作
        //1、创建对象关联原始文件
        FileInputStream fis2 = new FileInputStream("D:\\工作\\src\\ency.txt");
        //2、创建对象关联解密文件
        FileOutputStream fos2 = new FileOutputStream("D:\\工作\\src\\redu.txt");
        //3、解密
        int b2;
        while ((b2 = fis2.read()) != -1) {
            fos2.write(b2 ^ 2);
        }
        //4、释放资源
        fos2.close();
        fis2.close();
    }
}
